package jheej5024;

public class J09_While {

	// 반복문
	// 가끔 어떤 동작을 여러 번 수행해야 할 때가 있음
	// 코드를 복사해서 반족을 해도 해결되지 않는 문제발생
	// 반복횟수가 5번이면 코드 줄수도 5줄 작성
	// 코드내 내용이 수정되면 그 사본도 수정
	
	// 이것에 대한 현명한 방법은 반족문 안에 코드를 넣는 것
	// 즉, 반족할 코드를 한줄만 작성하고 
	// 컴파일러에게 이 코드를 몇번이고 반족실행하라고 지시할 수 있음
	
	// 반복문의 종류
	// while, do-while, for
	
	// while
	// while(조건식) {
	//        문장;
	// }
	// 조건식의 결과가 참이면
	// 블록 안의 문자가 실행되고
	// 다시, 조건식을 검사
	// 따라서, 반복 실행을 중단하려면
	// 조건식의 결과가 거직이되도록 만들어나
	// break 문을 사용하면 됨
	
	// 반복문의 처리 과정을 단계별로 파악하려면
	// 통합개발환경의 디버깅 기능을 이용하면 됨
	
	// break, continue
	// break문은 while, do-while, for문의 반복실행을 중단하기 위해 사용
	// break문은 아무대나 사용하면 컴파일 오류 발생
	
	// continue문은 while, do-while, for문의
	// 현재 반족을 중단하고 다음 반복의 시작으로 제어를 넘김
	
	
	public static void main(String[] args) {
		// 반복 처리문을 사용하지 않았을 떄
		System.out.println( "선생님~ 사랑해요~" ); // 1번
		
		System.out.println( "선생님~ 사랑해요~" ); // 3번
		System.out.println( "선생님~ 사랑해요~" ); 
		System.out.println( "선생님~ 사랑해요~" ); 
		
		System.out.println( "선생님~ 사랑해요~" );  // 5번 
		System.out.println( "선생님~ 사랑해요~" ); 
		System.out.println( "선생님~ 사랑해요~" ); 
		System.out.println( "선생님~ 사랑해요~" ); 
		System.out.println( "선생님~ 사랑해요~" ); 
		
		// 문제 1 : 반복문을 사용하지 않고
		//            '시간은 금이라구, 친구!!' 라는 문장을
		//             5번 반복 출력
		
		System.out.println( "시간은 금이라구, 친구!!" );
		System.out.println( "시간은 금이라구, 친구!!" );
		System.out.println( "시간은 금이라구, 친구!!" );
		System.out.println( "시간은 금이라구, 친구!!" );
		System.out.println( "시간은 금이라구, 친구!!" );

		// 반복문을 이용하면 다음과 같음
		int count = 0;
		while ( count < 5 ) { 
			System.out.println( "시간은 금이라구, 친구!!" );
			count = count + 1;
		}
		
		
		// 문제 2 : 반복문을 사용하지 않고
		//            1 ~ 10까지 출력하는 프로그램
		
		count = 1;
		while ( count <= 10 ) {	
			System.out.println( count ); 	
			++count;          // count = count + 1;
		}
		
		// 문제 3 : 반복문을 이용해서
		// 구구단의 19단을 출력해 봄
		// 19 x 1 = 19
		// 19 X 2 = 38
		// ... ...
		// 19 x 19 = 361
		
		// teacher 풀이
		count = 1;
		while ( count <= 19 ) {
			System.out.println ( "19 x " + count + " = " + 19 * count );
			++count;
		}
		
		// 전희주 
		count = 1;
		int gugu = 1;
		while ( count <= 19 ) {
			gugu = 19 * count;
			System.out.println ( "19 x "+ count + "=" + gugu );
			++count;  
		}
		
				
		// 문제4 : 반복문과 break를 이용해서
		// 1 ~10 까지 출력하는 프로그램
		
		count = 1;
		while ( count <= 10 ) {	
			System.out.println( count );
			++count;        
		}  // break 를 사용하지 않음
		
		count = 1;
		while ( true ) {
			if ( count > 10 ) break;
			System.out.println( count );
			++count;        
		}  // break 를 사용함
	
		
		
		// 문제5 : 반복문과 continue를 이용해서
		// 1 ~10 까지 출력하는 프로그램
		// 단, 5는 출력하지 않음
		
		count = 1;
		while ( count <= 10 ) {
			if ( count != 5 )
				System.out.println( count );
			++count;
		}  // continue 를 사용하지 않았을 때
			
		
		count = 1;
		while ( count <= 10 ) {
			if ( count == 5 ) {++count; continue; } 
				System.out.println( count );
			++count;
		}  // continue 를 사용했을때
		
		
		// 문제 6 : 1 ~ 100 사이에
		// 짝수만 출력하는 프로그램
		
		count = 1;	 
		while ( count <= 100 ) {
			if ( count % 2 == 0 ) 
				System.out.println( count );
			++count;
		}	
		
		// 문제 7 : 1 ~100 사이에
		// 홀수만 출력하는 프로그램
		
		count = 1;		 
		while ( count <= 100 ) {
			if ( count % 2 == 1 ) 
			    System.out.println( count );
			++count;
			
		}
	}
  }
